mysql

推荐列表 站点导航

当前位置:首页 > 数据库 > mysql >

更新text字段时出现Row size too large报错应付措施

来源:互联网  作者:网络  发布时间:2020-12-06 23:49
起因: 团购开发报告说更新时出错。 更新SQL如下: 复制代码 代码如下: UPDATE table_name d SET d.column_name=aaaaaaaaaaaaaaaaa...
起因:  团购开发报告说更新时出错。    更新SQL如下:  复制代码 代码如下:     UPDATE table_name d SET d.column_name='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'  WHERE d.ID=100976;      报错信息如下:  Error Code : 1118  Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs  疑惑:  更新字段只涉及 column_name字段,且该字段是TEXT类型。    个人之前理解是:  TEXT的内容在 Dynamic的table format下是存在off-page中的,不会占用row size的计算。  Barracuda 对应row_format ( dynamic, compress) ,其中dynamic下text的所有内容都是off-page存放的 (点击查看)  Antelope 对应row_format (compact, redundant),其中compact下的text是存786B在row中,超过部分存在off-page  而服务器配置是 innodb_file_format = Barracuda  照理说所有table用的都是 dynamic 结构。  但是! 原因如下,摘自文档:  To preserve compatibility with those prior versions, tables created with the InnoDB Plugin use the prefix format, unless one of ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED is specified (or implied) on the CREATE TABLE command.  也就是说,建表时不显示指定 row_format = dynamic ,即使 innodb_file_format = Barracuda 表的row-format还是 compact    所以总结为一句话就是:如果某个表的text字段很多建议建表时加上 row_format = dynamic  当然,回过头来MySQL的报错也是有误导性的,bug库中也对confirm了这个bug(点击查看),并在5.1.61中优化了报错提示。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/mysql/828.shtml

最新文章
 这些文件如果在configure命 这些文件如果在configure命

时间:2021-01-22

说明在数据库崩溃时内存 说明在数据库崩溃时内存

时间:2021-01-22

破解极验(geetest)验证码 破解极验(geetest)验证码

时间:2021-01-22

今天这种代码阅读方法仍 今天这种代码阅读方法仍

时间:2021-01-22

 count(*) as cnt from sakila.fi count(*) as cnt from sakila.fi

时间:2021-01-22

 可能你注意到系统提示的 可能你注意到系统提示的

时间:2021-01-22

搭建环境与运行 搭建环境与运行

时间:2021-01-22

MySQL主从复制的常见拓扑 MySQL主从复制的常见拓扑

时间:2021-01-22

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

更新text字段时出现Row size too large报错应付措施

2020-12-06 编辑:网络

起因:  团购开发报告说更新时出错。    更新SQL如下:  复制代码 代码如下:     UPDATE table_name d SET d.column_name='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'  WHERE d.ID=100976;      报错信息如下:  Error Code : 1118  Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs  疑惑:  更新字段只涉及 column_name字段,且该字段是TEXT类型。    个人之前理解是:  TEXT的内容在 Dynamic的table format下是存在off-page中的,不会占用row size的计算。  Barracuda 对应row_format ( dynamic, compress) ,其中dynamic下text的所有内容都是off-page存放的 (点击查看)  Antelope 对应row_format (compact, redundant),其中compact下的text是存786B在row中,超过部分存在off-page  而服务器配置是 innodb_file_format = Barracuda  照理说所有table用的都是 dynamic 结构。  但是! 原因如下,摘自文档:  To preserve compatibility with those prior versions, tables created with the InnoDB Plugin use the prefix format, unless one of ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED is specified (or implied) on the CREATE TABLE command.  也就是说,建表时不显示指定 row_format = dynamic ,即使 innodb_file_format = Barracuda 表的row-format还是 compact    所以总结为一句话就是:如果某个表的text字段很多建议建表时加上 row_format = dynamic  当然,回过头来MySQL的报错也是有误导性的,bug库中也对confirm了这个bug(点击查看),并在5.1.61中优化了报错提示。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/mysql/828.shtml

相关文章

风云图片

推荐阅读

返回mysql频道首页